package com.mzlalal.mybatis.interceptor.prop;

import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.validation.annotation.Validated;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.util.List;

/**
 * mybatis plus的配置
 * 使用多租户必须配置:tenantIdName,tenantIdDbColumnName
 * 使用数据填充必须配置:insertBaseFields,updateBaseFields
 *
 * @author Mzlalal
 * @date 2021年5月5日 22:03:39
 **/
@Data
@Validated
@ConfigurationProperties(prefix = "mz.mybatis.interceptor")
public class MyBatisPlusProperties {

    /**
     * 是否开启租户拦截器
     */
    @NotNull(message = "enableTenantMode(是否开启租户拦截器)不能为空")
    private boolean enableTenantMode;

    /**
     * 默认的tenantId
     */
    @NotBlank(message = "defaultTenantId(默认的tenantId)不能为空")
    private String defaultTenantId;

    /**
     * tenantId在session中的名字
     */
    @NotBlank(message = "tenantIdName(租户ID)在系统session中存储的名称不能为空")
    private String tenantIdName;

    /**
     * tenant在数据库中的名字
     */
    @NotBlank(message = "tenantIdDbColumnName(租户ID)在数据库中的名称不能为空")
    private String tenantIdDbColumnName;

    /**
     * createTimeDbColumnName在数据库中的名字
     */
    @NotNull(message = "insert语句的基础填充字段不能为空")
    private List<String> insertBaseFields;

    /**
     * updateTimeDbColumnName在数据库中的名字
     */
    @NotNull(message = "update语句的基础填充字段不能为空")
    private List<String> updateBaseFields;
}
